package com.koron.plan.web.repairplan.notified;

import org.koron.ebs.mybatis.SessionFactory;
import org.springframework.core.Ordered;

/**
 * @author twcao
 * @title: RepairPlanNotify
 * @projectName GDH_EAM_V2
 * @description: 检修计划通知
 * @date 2021/9/1410:33
 */
public interface RepairPlanNotify<T> extends Ordered {

    /**
     * 初始化前
     * @param factory 会话
     * @param vo 实体
     * @return 是否成功
     */
    default boolean initializeBefore(SessionFactory factory, T vo) {
        return true;
    }

    /**
     * 保存之前
     * @param factory 会话
     * @param vo 实体
     * @return 是否成功
     */
    default boolean saveBefore(SessionFactory factory, T vo) {
        return true;
    }

    /**
     * 保存之后
     * @param factory 会话
     * @param vo 实体
     * @return 是否成功
     */
    default boolean saveAfter(SessionFactory factory, T vo) {
        return true;
    }

    /**
     * 删除之前
     * @param factory 会话
     * @param vo 实体
     * @return
     */
    default boolean deleteBefore(SessionFactory factory, T vo) {
        return true;
    }

    /**
     * 删除之后
     * @param factory 会话
     * @param vo 实体
     * @return
     */
    default boolean deleteAfter(SessionFactory factory, T vo) {
        return true;
    }

    /**
     * 过滤通知对象, 返回true，才会调用initializeBefore、saveBefore、saveAfter
     * @param factory 会话
     * @param vo 实体
     * @return 返回符合条件的对象
     */
    default boolean filter(SessionFactory factory, T vo) {
        return true;
    }
}
